package org.example.mq.mqsever.core;

import java.io.Serializable;

/**
 * Created with IntelliJ IDEA.
 * Description:做渐进主义的改良派,不做完没注意的速成派
 * User: XALEXC
 * Date: 2025-04-28
 * Time: 16:45
 */
public class BasicProperties implements Serializable {
    // 消息的唯一身份标识,此处为了保证ID的唯一性,我们使用UUID来作为message id.
    // UUID 是编程中用来生成唯一ID的算法.
    private String messageId;
    // 是一个消息上带有的内容,与 bindingKey做匹配
    // 如果当前交换机的类型是DIRECT,此时routingKey就表示转发的队列名
    // 如果当前交换机的类型是FANOUT,此时routingKey 无意义(不使用)
    // 如果当前交换机的类型是TOPIC,此时 routingKey就要和bindingKey做匹配.符合要求的才能转发给对应的队列
    private String routingKey;
    // 这个属性表示消息是否要持久化.1表示不持久化,2表示持久化.(RabbitMQ就是这样做的)
    private int deliverMode=1;

    //其实RabbitMQ来说,BasicProperties里面还有很多别的属性,其他的暂时就不先考虑了

    public String getMessageId() {
        return messageId;
    }

    public void setMessageId(String messageId) {
        this.messageId = messageId;
    }

    public String getRoutingKey() {
        return routingKey;
    }

    public void setRoutingKey(String routingKey) {
        this.routingKey = routingKey;
    }

    public int getDeliverMode() {
        return deliverMode;
    }

    public void setDeliverMode(int deliverMode) {
        this.deliverMode = deliverMode;
    }

    @Override
    public String toString() {
        return "BasicProperties{" +
                "messageId='" + messageId + '\'' +
                ", routingKey='" + routingKey + '\'' +
                ", deliverMode=" + deliverMode +
                '}';
    }
}
